/*
 *  author: lichuang
 *  2010-09-27
 */
#ifndef __CLRS_STUDY_STACK_H__
#define __CLRS_STUDY_STACK_H__

struct array_t;

typedef struct stack_t {
  struct array_t *array;
  int size;
} stack_t;

extern stack_t* stack_create(int size);
extern stack_t* stack_resize(stack_t *stack, int new_size);
extern void stack_destroy(stack_t *stack);
extern void stack_init(stack_t *stack);
extern void stack_print(const stack_t *stack, const char *msg);
extern int  stack_empty(stack_t *stack);
extern void stack_push(stack_t *stack, int value);
extern int  stack_pop(stack_t *stack);

#endif  //  __CLRS_STUDY_STACK_H__
